[レポート]ネットワーク Deep Dive #AWSSummit
AWS Summit Tokyo 2015のTA-08: Tech Deep Dive by Amazon:「ネットワーク Deep Dive」のレポートです。
スピーカーはAmazon Data Services Japanの吉田英世氏です。
レポート
AWSにおけるNetwork→Core Services
VPC Direct Connect Route53
VPCベストプラクティス
AWS Marketplaceの活用
1900の製品が登録、236のネットワーク製品が利用可能 ファイアアウォール ロードバランサ WAF ルータ ネットワーク高速化 費用は従量課金 Marketplaceの利用→EC2 Launch画面でMarketplaceを選択するだけ
VPC Peering
VPC同士をつなぐサービス Peering Connectionを作成しVPC同士で設定するだけ 企業間コラボレーションの例 AWS同士のシステムであればVPCを使わなくてもVPC Peeringだけで相互に接続可能 セキュリティ機能の共有 セキュリティ系アプリケーションを独立したVPCに固めて、各システムVPCから接続 セキュリティを共通サービスとして提供する
VPCのルーティング
全てルートテーブルに基づく IPレベルでの接続性を確保 どのオブジェクトにトラフィックを転送すれば良いのかを設定する IGW、VGW、VPC Peeringなどのオブジェクト 主なルーティングのエントリ VPCのCIDR→local デフォルトルート(0.0.0.0/0)→IGWやNATインスタンスなど オンプレミスへのルーティング→VGW 他のVPCへの通信→VPC Peering
VPCのセキュリティ
ネットワークACL→ブラックリスト型、ステートレス →ネットワーク構築時に不要な通信を禁止 セキュリティグループ→ホワイトリスト側、ステートフル →システムで使う通信を許可 ルーティングとセキュリティ ルーティングテーブルで疎通性を確保 全体で不要な通信をネットワークACLで禁止 個別に必要な通信をセキュリティグループで許可 それぞれのコンポーネントの特徴に合わせて適用を
VPCエンドポイント
従来はNATインスタンスが無いとプライベートサブネットからS3にアクセス出来なかった プライベートサブネットから直接S3にアクセス可能になった VPCエンドポイントへのルーティングを作成する 今後S3以外のサービスでもエンドポイントが作成される予定 エンドポイントポリシー エンドポイントを経由した通信にポリシーを適用 特定のバケットのみ通信可能とする、など 移行 VPCエンドポイントへのルーティングを追加する ロンゲストマッチでDestの狭いルーティングが優先的に適用される 注意事項 リージョンをまたいだ通信はできない そのエンドポイントがあるリージョンからしか使えない VPN先など外部のネットワークからVPCエンドポイントを使うことは出来ない
Direct Connectベストプラクティス
AWSのBGPの動作
ルートにBGP属性値は付与しない、ルータのBGP属性値を評価する ロードシェアリング可能、マルチパスが有効 プライベート接続ではVPCのCIDRを広告する パブリック接続ではリージョン内のAWSクラウドのプレフィックスを広告する
回線のフェイルオーバーを高速化する
デフォルトではフェイルオーバーまで90秒から180秒 リンクダウンではなく途中経路の切断の場合 →ルータで検知が出来ないため、タイムアウトまで待つ BFD(Bidirectional Forwarding Detection) ミリsec単位でBFDパケットを送受信 対向からBFDパケットが到達しなければ障害と判断 高速なフェイルオーバーが可能 DirectConnectのオフィシャルドキュメントでBFDを推奨 ルータがBFDを利用できる必要がある BFDが使えない場合→keeplaliveとholdtime BGPの機能の一部 holdtime時間内にkeepaliveパケットが受信出来なければ障害とはなん holdtime値を調整してフェイルオーバーを高速化する 対向同士でholdtimeを比較、低い方を使う →カスタマルータで低くすれば、DX側ルータも低い値を採用する
DirectConnectのトラフィック設定
2本以上の複数経路がある場合のトラフィックの流し方 Active/Standby構成 DXとVPN、あるいは複数のDXを作成し、Active/Standbyとする オンプレミスの受信はAS Path Prependのパス長が短い方を優先 オンプレミスからの送信はLocal Preferenceが高い方が優先 Active/Standbyの注意点 どの回線がActiveなのかを常に管理する 細い回線がActiveにならないように 上りと下りのトラフィックを意識 BGPの設定値によって非対称ルートになりえる Active/Activeの構成(ロードシェアリング) 複数の回線を束ねて高速化かつ冗長化 マルチパスにより送信トラフィックをロードバランス オンプレミスルータで設定することで、AWS向け通信がロードバランスされる AWSからオンプレミスへはデフォルトでマルチパスが有効になっている 広告経路が等価であればセッションベースでロードバランスする Active/Activeの注意点 回線切断時は生きている回線に通信が集中する 帯域あふれに注意 トラフィックの偏りに注意
占有型と共有型
物理線を占有するもの、物理線を他の顧客と共有するもの 占有型は物理接続単位、共有型は論理接続単位で管理 共有型は1つのVPCとしか接続できない 占有型はリードタイムが遅く高価 共有型はリードタイムが早く安価 キャリア閉域網の共有型を使われる場合が多い
ネットワークのコード化
コード化について
手順書や手動オペレーションによって構築するのではなく、 コードを作成し、実行し、インフラの構成をコードで管理する、という考え方 →オペレーションミスが防止できる →コード自体がインフラの状態を表す、構成管理できる
コード化するツール
CloudFormation JSONテンプレートでAWSのインフラ構築を自動化 複製、アップデート、バージョン管理が容易 AWS CLI、PowerShell、SDK AWSの操作をコマンドラインで行うツール CloudFormationのワークフロー JSONファイルを編集→CloudFormationにアップロード→構築 CloudFormer→既存構成を読み込んでJSONテンプレートを作成 AWS CLI 変数を使った動的な処理も可能 AWS CLIを使ったタグによる動的NAT制御の例 NATインタンス起動時にタグ情報を見て、自動的にルーティングテーブルに自分を登録する
さいごに
BGPについてなど、がっつりネットワークレイヤーから見たAWSの話が聞けて、すごく楽しかったです!